Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Błąd przy trainerze


Rekomendowane odpowiedzi

Opublikowano

Witam mam pytanie do was a mianowicie posiadam taki kod:

 

// test.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"
#include <Windows.h>
#include <iostream>


using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
HWND assaultcube = FindWindow(0, _T("AssaultCube"));


HANDLE hProcess;


DWORD pId;


int zycie;


int morezycie = 10000;


if(assaultcube) {


cout << " <<Nie znaleziono Okna\n\n";


} else {


GetWindowThreadProcessId(assaultcube, &pId);


cout << "Znaleziono Process:  " << pId << "\n";


hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pId);


if(!hProcess) {


cout << " < Nie znaleziono procesu\n\n";
} else {


cout << "Otworzono proces\n\n";




if(!ReadProcessMemory(hProcess, (void *)0x1F2C3F3F, (void *)&zycie, sizeof(zycie), NULL)) {


cout << " <Nie znaleziono pamieci\n\n";


} else {




cout << "Znaleziono okno : " << zycie << "\n\n";
if(!WriteProcessMemory(hProcess, (void *)0x1F2C3F3F, &morezycie, (DWORD)sizeof(morezycie), NULL)) {


cout << " <Nie czyta pamieci\n\n";


} else {


cout << "Czyta pamiec !\n\n";


}
}
}
}










CloseHandle(hProcess);
cout << "Zamknieto Process\n\n";
cin.get();
return 0;
}

I wywala mi taki błąd:

 

Error 1 error C4703: potentially uninitialized local pointer variable 'hProcess'
 
Co to za błąd?
 
 

65135238787935115850.gif

Opublikowano

okej 

 

jak mogę dodać do tego kodu offesty?

if(!ReadProcessMemory(hProcess, (void *)0x1F2C3F3F, (void *)&zycie, sizeof(zycie), NULL))

65135238787935115850.gif

Opublikowano

Kutwa, nie funkcjonuje juz normalnie

 

Handle hProcess

Powinno usunąć error.


 
Co do offsetow, ktoś gdzieś w tym dziale o tym mówił, a nie chcę mi się szukać lub samemu pisac.

TuByłaSygnatura.png

Opublikowano

@dadajszen

Dodajesz do otrzymanego adresu... Ale najpierw musisz wiedzieć jak działają pointery.

 

Btw. Gdybyś od czasu utworzenia tematu z kodem w vb zaczął cokolwiek samemu, to pewnie dziś bezproblemowo byś wszystko rozumiał, ale jak widać wolisz poczekać na gotowy kod. :/

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

Okej to jest dobrze zrobione?

WriteProcessMemory(phandle, (LPVOID)(value+0x5BC+0x2FE+0x1CF), (LPVOID) &newvalue, 4, 0);

Wgl jakby mi offsetów nie czytało 

65135238787935115850.gif

Opublikowano

@dadajszen

W dalszym ciągu nie wiesz jak działają wskaźniki, teraz odczytujesz po prostu jakiś adres który na 100% nie jest tym co chcesz, musisz odczytywać wartości dodając kolejne offsety a nie wszystkie na raz... Polecam jednak trochę poczytać o tych wskaźnikach, bo nie będziesz rozumiał o co chodzi. :/

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

Okej to jest dobrze zrobione?

WriteProcessMemory(phandle, (LPVOID)(value+0x5BC+0x2FE+0x1CF), (LPVOID) &newvalue, 4, 0);

Wgl jakby mi offsetów nie czytało 

 int adres_bazowy = 0x0EE06390, pierwszy_adres = 0, 
 offset[3] = {5A, 34, 9B};
 
 ReadProcessMemory(Proces, (PCVOID)adres_bazowy + offset[0], &pierwszy_adres, sizeof(pierwszy_adres), 0); // odczytujemy adres bazowy + offset, który ma w sobie wpisany adres na wskaźnik
 int drugi_adress = 0;
 ReadProcessMemory(Proces, (PCVOID)pierwszy_adres + offset[1], &drugi_adress, sizeof(drugi_adress), 0); // odczytujemy wartość spod wskaźnika, który w sobie również posiada adrs na kolejny wskaźnik
  int finalna_wartosc = 0;
 ReadProcessMemory(Proces, (PCVOID)drugi_adress + offset[2], &finalna_wartosc, sizeof(finalna_wartosc), 0); // odczytujemy wartość spod kolejnego wskaźnika. Zakładając że mamy doczynienia z dwupoziomowym wskaźnikiem ( lub trój - jesli źle mówię prosze mnie poprawić  ) , to do zmiennej "finalna wartosc zostanie zapisana wartośc z gry o która nam się rozchodzi  
 std::cout << "Wartosc, o ktorej marzeniu zdobyles to:" <<  finalna_wartosc;

Może trochę rozjaśni :P

Opublikowano

@Protengos

Przed liczbą w systemie heksadecymalnym musisz postawić "0x", inaczej (przynajmniej kompilator msvc) ci tego nie skompiluje, druga sprawa to taka że on chce użyć WPM a nie RPM czyli chyba najlepiej najpierw przeczytać dwa adressy a później w ostatniej linijce zamiast RPM użyć już WPM.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

@Protengos

Przed liczbą w systemie heksadecymalnym musisz postawić "0x", inaczej (przynajmniej kompilator msvc) ci tego nie skompiluje, druga sprawa to taka że on chce użyć WPM a nie RPM czyli chyba najlepiej najpierw przeczytać dwa adressy a później w ostatniej linijce zamiast RPM użyć już WPM.

Co do 0x to ja używam  GNU GCC i mi działa bez zarzutów, a co do zamiarów gościa, to ja chciałem mu tylko pokazać jak, a nie odwalić za niego robotę, bo to daremne :)

 

@down

 

Rzeczywiście masz rację, myślałem, że chodzi Ci o drugi argument funkcji do odczytu pmięci , że tam nie może być zmienna tylko musi być 0x + zmienna, a z offsetami masz całkowitą rację :) 

Opublikowano

@Protengos Hmm, trochę to dziwne bo może robić problem, rozumiem że na przykład taki offset "5A" jakoś może rozróżni (czy to hex czy dec) ale jakim cudem zrobi to samo z "34"? Przecież ten offset jest poprawny zarówno w systemie szesnastkowym jak i dziesiętnym a znaczy zupełnie co innego

Bot do gry NosTale:


[bOT] NosBota 1.3v

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...